package com.dubbo.config;

import java.util.ArrayList;
import java.util.List;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.MethodConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.config.ServiceConfig;
import com.dubbo.service.UserService;
import com.dubbo.service.impl.UserServiceImpl;

//@Configuration
public class DubboConfig {
//	## dubbo 服务名称
//	#dubbo.application.name=boot-user-service-provider
//	@Bean
//	public ApplicationConfig applicationConfig() {
//		ApplicationConfig applicationConfig = new ApplicationConfig();
//		applicationConfig.setName("boot-user-service-provider-config");
//		return applicationConfig;
//	}

//	## dubbo 注册中心协议
//	#dubbo.registry.protocol=zookeeper
//	## dubbo 注册中心地址
//	#dubbo.registry.address=193.112.34.169:2181
//	@Bean
//	public RegistryConfig registerConfig() {
//		RegistryConfig registerConfig = new RegistryConfig();
//		registerConfig.setProtocol("zookeeper");
//		registerConfig.setAddress("193.112.34.169:2181");
//		return registerConfig;
//	}

//	## dubbo 协议
//	#dubbo.protocol.name=dubbo
//	## dubbo 协议暴露的服务端口
//	#dubbo.protocol.port=20880
//	@Bean
//	public ProtocolConfig protocolConfig() {
//		ProtocolConfig protocolConfig = new ProtocolConfig();
//		protocolConfig.setName("dubbo");
//		protocolConfig.setPort(20880);
//		return protocolConfig;
//	}

//	@Bean
//	public ServiceConfig<UserService> serviceConfig(UserService userService) {
//		ServiceConfig<UserService> uServiceConfig = new ServiceConfig<>();
//		uServiceConfig.setInterface(UserService.class);
//		uServiceConfig.setRef(userService);
//		//此处是针对个别方法进行特殊限制，如没有要求，可不设置
//		MethodConfig methodConfig = new MethodConfig();
//		// 1.设置方法名
//		methodConfig.setName("findAddressList");
//		// 2.设置方法的超时时间
//		methodConfig.setTimeout(2000);
//		List<MethodConfig> methodConfigList = new ArrayList<>();
//		methodConfigList.add(methodConfig);
//		uServiceConfig.setMethods(methodConfigList);
//		return uServiceConfig;
//	}
}
